import os
import zipfile

def compress_second_level_folders_to_zip(root_dir):
    """
    遍历root_dir目录下的所有第一层子目录，并将每个子目录下的第二层文件夹压缩为一个ZIP文件（归档模式-0），
    并将生成的ZIP文件存放在对应的第二层文件夹内。
    对于第一层的文件，直接打印出文件路径和名称。

    :param root_dir: 根目录路径
    """
    # 遍历根目录下的所有项目
    for first_level_item in os.listdir(root_dir):
        first_level_item_path = os.path.join(root_dir, first_level_item)
        
        if os.path.isdir(first_level_item_path):
            # 遍历第一层下面的第二层文件夹
            for second_level_item in os.listdir(first_level_item_path):
                second_level_item_path = os.path.join(first_level_item_path, second_level_item)
                
                if os.path.isdir(second_level_item_path):
                    # 创建ZIP文件名及路径，现在ZIP文件会存放在对应的第二层文件夹内
                    zip_filename = f"{second_level_item}.zip"
                    zip_filepath = os.path.join(first_level_item_path, zip_filename)
                    
                    print(f"正在压缩 {second_level_item_path} 到 {zip_filepath}")
                    
                    # 创建ZIP文件
                    with zipfile.ZipFile(zip_filepath, 'w', compression=zipfile.ZIP_STORED) as zipf:
                        # 遍历第二层文件夹及其所有子目录下的文件
                        for dirpath, _, filenames in os.walk(second_level_item_path):
                            for filename in filenames:
                                file_path = os.path.join(dirpath, filename)
                                # 在ZIP文件中保存的相对路径
                                arcname = os.path.relpath(file_path, start=second_level_item_path)
                                zipf.write(file_path, arcname)
                    
                    print(f"完成压缩 {zip_filename}")
                elif os.path.isfile(second_level_item_path):
                    # 如果是文件，则打印路径和文件名
                    print(f"文件存放位置不对: {second_level_item_path}")

# 使用函数
root_dir = r"D:\temp\photo_tmp"  # 注意在Windows路径中使用正斜杠或者双反斜杠

compress_second_level_folders_to_zip(root_dir)